// CustomPalette.js

export default class CustomPalette {
	constructor(bpmnFactory, create, elementFactory, palette, translate, globalConnect) {
		this.bpmnFactory = bpmnFactory;
		this.create = create;
		this.elementFactory = elementFactory;
		this.translate = translate;
		this.globalConnect = globalConnect;
		palette.registerProvider(this);
	}
	// 这个函数就是绘制palette的核心
	getPaletteEntries(element) {
		const { bpmnFactory, create, elementFactory, translate, globalConnect } = this;
		function createTask(type) {
			return function (event) {
				const businessObject = bpmnFactory.create(type); // 其实这个也可以不要
				const shape = elementFactory.createShape({ type, businessObject });
				create.start(event, shape);
			};
		}

		return {
			// 左侧面板新增自定义
			"create.lindaidai-task": {
				group: "model", // 分组名
				// className: 'bpmn-icon-task red', // 样式类名
				className: "icon-custom lindaidai-task", // 样式类名
				title: translate("创建一个类型为create.cake的任务节点"),
				action: {
					// 操作
					dragstart: createTask("bpmn:Task"), // 开始拖拽时调用的事件
					click: createTask("bpmn:Task"), // 点击时调用的事件
				},
			},
			// 左侧面板新增自定义
			"create.start-event": {
				group: "event", // 分组名
				// className: 'bpmn-icon-task red', // 样式类名
				className: "icon-custom lindaidai-task", // 样式类名
				title: translate("创建一个类型为create.cake的任务节点"),
				action: {
					// 操作
					dragstart: createTask("bpmn:StartEvent"), // 开始拖拽时调用的事件
					click: createTask("bpmn:StartEvent"), // 点击时调用的事件
				},
			},
			// 修改默认左侧面板连接线
			"global-connect-tool": {
				group: "tools",
				className: "bpmn-icon-connection-multi", // 默认
				title: "新增线",
				action: {
					click: function (event) {
						globalConnect.toggle(event);
					},
				},
			},
			// 修改默认左侧面结束任务
			"create.end-event": {
				group: "event",
				className: "bpmn-icon-task red", // 默认
				title: translate("Create EndEvent"),
				action: {
					dragstart: createTask("bpmn:EndEvent"), // 开始拖拽时调用的事件
					click: createTask("bpmn:EndEvent"), // 点击时调用的事件
				},
			},
		};
	}
}

CustomPalette.$inject = ["bpmnFactory", "create", "elementFactory", "palette", "translate", "globalConnect"];
